#ifndef _TransversityProkudin_H_
#define _TransversityProkudin_H_

//
// TransversityProkudin.h
//
// Created by TB on 11/23/11.
// Copyright 2011 BNL. All rights reserved.
//

#include "tppmc/parameters.h" // For SETS
#include "tppmc/Particle.h"
#include "tppmc/PartonContent.h"
#include "tppmc/PartonDistribution.h"
#include "tppmc/SofferBoundProkudin.h"

namespace tppmc {

   /**
    Transversity parameterisation by Prokudin.
    */
   class TransversityProkudin : public PartonDistribution {
      
   public:
      
      /**
       Constructor.
       See SofferBoundProkudin for valid values for order.
       */
      TransversityProkudin(int order = SofferBoundProkudin::LO);
      
      virtual ~TransversityProkudin();

      /**
       Evaluate the distribution for a parton at a given scale.
       virtual double Evaluate(const pythpart&, double scale) const = 0;
       */
      virtual void Evaluate(const pythpart&, double scale,
                            PartonContent&) const;

      /**
       Returns true if the distribution of the input parton type
       is supported by this function.
       */
      virtual bool Supports(const pythpart&) const;

      virtual std::string Name() const {
         return "Transversity, Prokudin";
      }
      
   protected:
      
      SofferBoundProkudin mBound; ///< Fit parameters give the transversity
                                  ///< distribution relative to the Soffer
                                  ///< bound.
      
      SETS mParameters; ///< Make use of existing parameter-reading
                        ///< functionality. Would be worthwhile
                        ///< improving this later...
      
      ClassDef(tppmc::TransversityProkudin, 1)
   };
   
} // namespace tppmc

#endif
